На прямой расположены n мышей и n норок. Каждая норка может вместить только 1 мышь. Мышь может
оставаться на своем месте, перемещаться на один шаг вправо от x до x + 1 или на один шаг влево от x до x – 1.
Любой из этих ходов занимает 1 минуту. Поставьте каждой мыши в
соответствие норку так, чтобы минимизировать время, за которое последняя мышь
спрячется в норке.
Вход.
Первая строка содержит число n (n ≤ 105). Вторая строка
содержит координаты n мышей. Третья
строка содержит координаты n норок.
Координаты мышей и норок являются целыми числами от 0 до 109.
Выход.
Выведите наименьшее время, за которое последняя мышь спрячется в норке.
Пример входа |
Пример выхода |
4 3 6 1 9 5 3 11 2 |
2 |
жадность
Анализ алгоритма
Отсортируем координаты мышей и нор
моответственно в массивах a
и b. Мышь a[i]
должна спрятаться в нору
b[i]. Вычисляем
максимум среди модулей разностей | b[i] – a[i] |.
Отсортируем массивы с координатами
мышей и нор. Мыши a[i] поставим в соответствие нору b[i].
Ответ
2 достигается для четвертой мыши, которой следует бежать из точки с координатой
9 в нору с координатой 11.
Объявим рабочие массивы a и b.
#define MAX 100001
int a[MAX], b[MAX];
Читаем
входные данные.
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for (i = 0; i < n; i++)
scanf("%d", &b[i]);
Сортируем
массивы.
sort(a, a + n);
sort(b, b + n);
Вычисляем
максимум среди модулей разностей | b[i] – a[i] |.
res = 0;
for (i = 0; i < n; i++)
if (abs(b[i] - a[i])
> res) res = abs(b[i] - a[i]);
Выводим
ответ.
printf("%d\n", res);
import
java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
Integer a[] = new Integer[n];
for(int i = 0; i < n; i++)
a[i] = con.nextInt();
Integer b[] = new Integer[n];
for(int i = 0; i < n; i++)
b[i] = con.nextInt();
Arrays.sort(a);
Arrays.sort(b);
int res = 0;
for (int i = 0; i < n; i++)
if (Math.abs(a[i] - b[i]) > res) res = Math.abs(a[i] - b[i]);
System.out.println(res);
con.close();
}
}
Читаем входные данные.
n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
Сортируем массивы.
a.sort()
b.sort()
Вычисляем максимум среди модулей
разностей | b[i]
– a[i] |.
res = 0
for
i in
range(n):
if abs(a[i] - b[i]) > res: res = abs(a[i] - b[i])
Выводим ответ.
print(res)